Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Jason Espin 368 posts 1335 karma points
    Apr 30, 2014 @ 11:55
    Jason Espin
    0

    Programmatically create and store images retreived as byte[] data from a web service as media items in Umbraco

    Hi all,

    Thanks to the help of numerous individuals on this forum, I've been able to integrate some scheduled web service calls into my Umbraco site that uses the response from the web service to update some of the content on my site. I can now handle text and some various other content but my main query is how should I deal with images that are delivered from the web service in byte[] format?

    For a little context, the site I am developing uses web service calls to retreive the details of a product which users of our desktop software have created on their machine. Each of these products is pulled via a web service call into my Umbraco site and created as an individual product page under the parent node of products.

    Products > Product
    

    Each product has several properties such as an ID, a name, notes and a collection of images. Once I have called my web service I am creating these pages using the following code:

    //Construct Service Request
        svc = new StaticDataWebServiceSoapClient();
        var response = svc.GetProducts(ref compressionSoapHeader,ref managedUserHeader);
    
        //Umbraco Content Services
        int rootID = 1117;
        IContentService cs = ApplicationContext.Current.Services.ContentService;
        var remove = cs.GetChildren(rootID).Where(x => x.ContentType.Alias == "product");
        foreach (var child in remove)
        {
          cs.Delete(child);
        }
        foreach(var product in response){
          var item = cs.CreateContent(product.ContinentName, rootID, "product");
          //Set the properties using the SetValue method, passing in the alias of the property and the value to assign to it
          item.SetValue("continentId", product.Id);
          item.SetValue("continentName", product.ProductName);
          item.SetValue("continentNotes", product.Notes);
          foreach (var image in product.Images)
          {
            ??? destination.SetValue("ProductImages", image._Image); ???
            image.Caption;
            image.FileName;
            image.ImageId;
            image.KeywordID;
          }
          cs.SaveAndPublishWithStatus(item);
        }
    

    As you can see from the code, each product has several images associated with it that I would also like to pull into the site and associate with the product page that is being created. How would I go about doing this? Would I need to use the Media Service and a specific datatype or would this structure fit easily into a multiple media picker?

    Any help would be greatly appreciated.

Please Sign in or register to post replies

Write your reply to:

Draft